package com.baselibrary.utils;

import java.text.DecimalFormat;

/**
 * @author:hanke 2022/9/20
 * desc:
 */

public class DistanceUtils {

    private static final double EARTH_RADIUS = 6378137;


    private static double rad(double d) {
        return d * Math.PI / 180.0;
    }


    /**
     * method_name: getDistance
     * params: [lng1, lat1, lng2, lat2]
     * return: double (米)
     **/
    public static String getDistance(double lng1, double lat1, double lng2, double lat2) {
        double radLat1 = rad(lat1);
        double radLat2 = rad(lat2);
        double a = radLat1 - radLat2;
        double b = rad(lng1) - rad(lng2);
        double s = 2 * Math.asin(Math.sqrt(
                Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
        s = s * EARTH_RADIUS;
            if (s < 1000) {
                return new DecimalFormat("# m").format(s);
            } else {
                return new DecimalFormat("#.# km").format(s / 1000);
            }

    }
}